#include "_mysql.h"

connection conn;
sqlstatement stmt;

// 定义用于超女信息的结构，与表中的字段对应。
struct st_girls
{
    long id;        // 超女编号
    char name[31];  // 超女姓名
    double weight;  // 超女体重
    char btime[20]; // 报名时间
} stgirls;

int main()
{
    // 连接我们的书库
    if (conn.connecttodb("127.0.0.1,root,Wanyingxing0@Bjut,mysql,3306", "utf8") != 0)
    {
        printf("登录失败\n");
        return -1;
    }

    stmt.connect(&conn);

    // 表插入数据：insert into 表名字（字段1，字段2，字段3） value(1,2,3);
    // 准备预编译的sq语法
    stmt.prepare(
        //"insert into girls(id,name,weight,btime) values(:1,:2,:3,str_to_date(:4,'%%Y-%%m-%%d %%H:%%i:%%s'))");
        "insert into girls(id,name,weight,btime) values(:1+1,:2,:3+45.35,str_to_date(:4,'%%Y-%%m-%%d %%H:%%i:%%s'))");
    // 预编译的语句
    // 参数（已知的空间）-->绑定到sql语句中
    stmt.bindin(1, &stgirls.id);
    stmt.bindin(2, stgirls.name, 30);
    stmt.bindin(3, &stgirls.weight);
    stmt.bindin(4, stgirls.btime, 19);

    // 执行
    for (int i = 0; i < 5; i++)
    {
        memset(&stgirls, 0, sizeof(st_girls));
        stgirls.id = i;
        sprintf(stgirls.name, "西施%05dgirl", i + 1);
        stgirls.weight = i;
        sprintf(stgirls.btime, "2021-08-25 10:33:%02d", i);

        // 执行
        if (stmt.execute() != 0)
        {
            printf("stmt.execute() failed.\n%s\n%s\n", stmt.m_sql, stmt.m_cda.message);
            return -1;
        }
        printf("成功插入了%ld条记录。\n", stmt.m_cda.rpc); // stmt.m_cda.rpc是本次执行SQL影响的记录数。
    }
    printf("insert table girls ok.\n");
    conn.commit();
    return 0;
}